Computer system with environmental manager for detecting and responding to changing environmental conditions

ABSTRACT

A computer uses an environmental manager (20) to detect and respond to changing environmental conditions, in order to enhance and simplify a users interaction with the computer. Environment changes are detected by a plurality of informants (22), each of which has a specified function. Informants communicate through a CIM (26). The CIM (26) establishes communication channels with each informant regarding which information will be provided by the informant and which information that informant needs from other informants. Informants (22) may receive environmental information from a number of sources, including physical location detectors, hardware configurations, software configurations, and network connections. As environmental conditions change, the informants and applications may respond to the changes. A particular capability to respond is the autolaunch capability which detects user behavior and uses this knowledge to automatically load a program responsive to changing environmental conditions.

This application claims priority under 35 USC § 119(e)(1) of provisionalapplication Ser. No. 60/050,930 filed May 30, 1997.

CROSS REFERENCE TO RELATED APPLICATION

This application claims the benefit of the filing date of copendingprovisional application U.S. Ser. No. 60/050,930, filed May 30, 1997,entitled "Computer System With Environmental Manager" to Watts et al.

This application is related to U.S. App. Ser. No. 08/759,899, entitled"Graphical User Interface" to Freach et al filed Dec. 3, 1996, U.S. Ser.No. 60/048,139 entitled "Computer System With Environmental MessagingStructure" to Fuiks et al filed May 30, 1997 and U.S. Ser. No.60/048,086 entitled "Computer System With Environmental Detection" toWatts filed May 30, 1997.

BACKGROUND OF THE INVENTION

1. Technical Field

This invention relates in general to computing and control devices and,more particularly, to an environment manager for computing and controldevices.

2. Description of the Related Art

The advent of the personal computer has changed the ways in which peoplework. While only a small percentage of people had access to computersfifteen years ago, almost everyone has access to a computer today.Further, the computer has become an important tool in both theprofessional and private lives of many people.

The mobile computer allows people to have computing power on demand. Inturn, the computer has become, for many people, a tool which is used ina variety of places and in a variety of different ways. It may be usedin the office for document production, in meeting rooms and in the fieldfor presentations, on airplanes for administrative tasks, and in thehome for entertainment, education, household management, and off-hourswork.

While the computer has empowered users in many ways, the complexity ofoperation often offsets, or overcomes, its benefits. In particular,today's computers are directed towards a single user at a singlelocation. In fact, computers are often used by multiple people and inmultiple workplaces. As the users and/or workplaces change, today'scomputer requires user interaction to adapt to the new circumstances.

For example, a user at the office may need resources such as a printer,scanner, or group-ware computing environments, and have access to adocking station with a large, high-resolution monitor, whereas the sameuser on an airplane needs batteries, small footprints and ease of accessto local data. At home, the user may connect to a different printer anda smaller monitor. While in the office the user may use word processing,spreadsheet and scheduling software heavily, while he or she may use afinancial program and entertainment software at home.

The interaction required by a user due to changing circumstances maytake many forms, from changing an electronic-mail (e-mail) address tomodifying network connections. As the difficulty of the interactionincreases, the value of the computer decreases. Accordingly, many usersavoid portable computers, even though the realize the benefits ofmobility, to avoid the complexity of operating the computer in variouscircumstance, or under-use the power of portable computer.

Accordingly, a need has arisen for a method and apparatus for enhancedcomputing functionality.

SUMMARY OF THE INVENTION

The present invention provides a computer which detects changes in anenvironment associated with the computer, determines an optimumconfiguration based on the new environment and modifies theconfiguration of the computer based on the optimum configuration.

The present invention provides significant advantages over the priorart. When the environment changes due to changes initiated by a user orby changes in the environment of the computer, the configuration can becontrolled to aid the user. For example, programs can be automaticallyloaded by the computer based on prior experiences or hardwareconfigurations could be modified. According, the user involvement insetting a computer to a desired configuration in many differentcircumstances can be greatly reduced.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention, and theadvantages thereof, reference is now made to the following descriptionstaken in conjunction with the accompanying drawings, in which:

FIG. 1 illustrates a block diagram of a prior art computer operatingsystem architecture under WINDOWS 95;

FIG. 2 illustrates a block diagram of an environmental managerarchitecture;

FIG. 3 illustrates a state diagram describing operation of a CentralInformation Manager (CIM);

FIG. 4 illustrates a state diagram describing operation of an informant;

FIG. 5a illustrates a diagram of environmental detection sources;

FIGS. 5b, 5c, and 5d are state diagrams illustrating changing ofcomputer configuration in response to changes by the environmentaldetection sources of FIG. 5a;

FIG. 6 illustrates a state diagram describing the operation of aninformant responsive to receiving environmental information;

FIG. 7 illustrates a flow diagram providing a first example of operationof the environmental manager responsive to a change in environmentalconditions;

FIG. 8 illustrates a flow diagram providing a second example ofoperation of the environmental manager responsive to a change inenvironmental conditions;

FIGS. 9a and 9b illustrate flow charts describing an autolaunch feature;

FIG. 10 illustrates a polyhedron shaped graphical user interface forcontrolling a multi-workspace environment;

FIG. 11 illustrates a detailed view of a cube used in the interface ofFIG. 10;

FIG. 12 illustrates movement of the cube on a workspace;

FIGS. 13a and 13b illustrate use of the cube to select a workspace;

FIGS. 14a, 14b, 14c and 14d illustrate rotation of the cube to exposeadditional workspaces;

FIGS. 15a-15j illustrate control of the graphical user interface throughmenu selections;

FIG. 16 illustrates use of the cube to move and copy workspace objectsbetween workspaces; and

FIG. 17 illustrates a dialog box used to save a document from an activeapplication to a desired workspace.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention is best understood in relation to FIGS. 1-17 ofthe drawings, like numerals being used for like elements of the variousdrawings.

FIG. 1 illustrates a functional diagram of a prior art computer. Thebasic operations of a computer are controlled through its operatingsystem 10. A number of different operating systems are in widespread usetoday. A few of the more popular operating systems include WINDOWS 95and WINDOWS NT (by Microsoft Corporation), SYSTEM 7.5 (by AppleComputer) and UNIX (available from a variety of vendors under differentnames). While FIG. 1 shows a basic operational block diagram for WINDOWS95, other operating systems would be similar in functionality.

The operating system 10 communicates to hardware 12 through devicedrivers and VXD's (virtual device drivers) 14. "Hardware" includes, forexample, the video/graphics adapter, sound card, serial and parallelports, CD-ROM (compact disk read only memory), hard and floppy drives,tape backup units, keyboard, modem, monitor, mouse and network adapter.

The operating system 10 communicates with the user through a shell 16,sometimes referred to as the graphical user interface (GUI). The shell16 controls the manner in which information is displayed (or otherwiseoutput) to the user and allows the user to input information to thecomputer.

Application software 18 is designed to work on a specific operatingsystem (although some applications can work on multiple, relatedoperating systems such as WINDOWS 95 and WINDOWS NT). The applications18 communicate with the hardware 12 through the operating system 10 anddrivers 14 and communicate with the user through the operating system 10and shell 16. Modern day operating systems are "multitasking", i.e.,they allow multiple application programs to operate simultaneously.

VB (Visual Basic) script 19 is shown as an example of a language whichcan be used by developers or users for programming operations within aprogram. VBA (Visual Basic for Applications), for example, allowsprogramming within an application over a wide assortment of applicationssold by MICROSOFT. A user or developer may use this program to automatesteps, such as automatically filling in cells of a spreadsheetresponsive to inputs on a custom dialog box.

An overview of the environment manager of the present invention is shownin FIG. 2. The environment manager 20 works in conjunction with anoperating system 10 to provide functionality to overcome many of theshortcomings of present day computers. While, for purposes ofillustration and explanation, the environment manager 20 will bediscussed in connection with WINDOWS 95, it could be designed to workwith any existing or future operation system 10.

The environment manager 20 includes a plurality of informant programs(hereinafter "informants") 22 which communicate between themselves andto environment manager aware application programs (hereinafter "EM-awareapplications) 24 through a central intelligence module (hereinafter CIM)26. An EM-aware application 24 can be thought of as an applicationprogram which has some or all of the messaging capabilities of aninformant. Hence, FIG. 2 illustrates EM-aware applications 24 as anapplication including an informant 22 for messaging purposes. The CIM 26also communicates with the operating system 10 and drivers 14.

In operation, the informants 22 gather and disseminate information. TheCIM 26 acts as a conduit for routing information between informants 22,including the informant sections 22 of EM-aware applications 24.

Informants 22 are receivers and generators of information regarding allaspects of operation of the computer system. Classes of informants shownin FIG. 3 include hardware and bus informants 22a, software informants22b, user output informants 22c, user input informants 22d and scriptprocessing informants 22e, Particular informants 22 within the hardwareclass would include, for example, docking informants to detect andmanage docking functions for a notebook computer, power informants todetect power sources and to automatically turn devices on and off, modeminformants to detect and control different modem types (data, data/fax,data/fax/voice, cellular), printer informants to handle printerconnections and print jobs, monitor the status of the parallel port fora printer which is directly connected to the computer, monitor networkconnected printers, monitor infra-red connections, and GPS informantswhich interface with a global positioning system (GPS). Bus informantswould include, for example, informants for providing information andcontrolling network connections (direct connect and wireless), PC Cardconnections, SCSI connections and infra-red connections. Softwareinformants would include environment informants to determine localenvironmental factors such as local area code, time zone, zip code andso on, scheduling informants to schedule activities at specific times,workspace informants to monitor activities in each workspace andmaintain histograms to determine the most used user commands, andautostart informants to automatically launch applications based on usageand user choice.

It should be noted that the list of informants provided herein is merelyfor illustration purposes. In an actual embodiment there could be manymore informants to detect, monitor and control events within a computersystem and between computer systems.

The communication structure shown in FIG. 2 allows complete informationdissemination between various software and hardware components in acomputer system (and with other computers through a network). As aresult, the computer has an enhanced ability to adjust to differentenvironments in order to simplify its interaction with the user.

Central Information Manager

CIM 26 is the central coordinating authority for messages. In thepreferred embodiment, all messages between informants 22 are sent toeach other via the CIM 26, rather than directly. The CIM 26 maintains atable (the "dispatch table") which identifies particular messagesdesired by each informant 22 and the messages that that informant 22will supply. For example, an EM-aware graphics application 24 may beinterested, among other things, whether a scanner is turned on, whethera digitizing tablet is attached, and specific information about thescanner and/or digitizing tablet. Thus, upon loading the EM-awaregraphics application, the CIM 26 would note in its dispatch table thedifferent types of information requested by the informant 22 of thegraphics application. During operation, if a scanner informant sent amessage indicating that the scanner had been turned off, the CIM wouldlook in its dispatch table to determine which informants 22 wereinterested in that message. The CIM 26 would then forward the message tothe informant of the EM-aware graphics application, and to any otherinformants 22 linked to the message in the dispatch table.

In the preferred embodiment, information can be received by informants22 by two mechanisms. The first is the routing of information tointerested informants 22 by reference to the dispatch table of the CIM26. A second mechanism is by querying. In a query, an interestedinformant 22 requests information from the CIM 26. For example, when theEM-aware graphics application is executed for the first time, it maysend out several queries to determine the current state of the computer.Thus, it may request information regarding the state of the scanner. TheCIM 26 would then query the appropriate informant 22 which isresponsible for maintaining information regarding the state of thescanner. If the informant is not currently active, the CIM 26 would beresponsible for loading the appropriate informant 22 as well. Afterperforming whatever steps were necessary to obtain the information forwhich it was responsible, the informant 22 would reply to the CIM 26with a message containing the requested information; that message wouldbe forwarded by the CIM 26 to the graphics program which initiated thequery.

FIG. 3 illustrates a state diagram describing operation of the CIM 26.The CIM 26 coordinates and routes all messages between informants 22.State 30 is the home state. When an informant 22 is loaded, CIM 26establishes communication channels with the newly loaded informant 22 instate 32. The communication channels which are established include: (1)the channel through which messages will be sent from the informant 22 tothe CIM 26, (2) the channel which messages will be forwarded from theCIM 26 to the informant 22, and (3) the channel through which theinformant 22 is queried for information. Further, in state 32, thedispatch table is updated to (1) define which messages are availablefrom the newly loaded informant 22 and (2) designate which messages areto be sent to the newly loaded informant 22. When the actions in state32 are completed, the CIM 26 returns to the home state 30.

When an informant 22 is terminated, the CIM 26 transitions to state 34where it updates the dispatch table to note that the terminated orinformant 22 is no longer available to receive or generate messages.

When a new message is received from an informant 22, the state shifts tostate 36, where the message is placed in a FIFO (first in first out)memory queue controlled by the CIM 26. The queue allows multiplemessages to be received by the CIM 26 while another message is beingdispatched by the CIM 26 to one or more interested informants 22.

Whenever the CIM 26 detects that the message queue is not empty, itshifts to state 38, where the CIM determines which informants 22(including EM-aware applications 24) are interested in the information(established in state 32 as each informant is loaded). For eachidentified informant 22, the CIM 26 sends the message to that informant22 in state 40. The loop between states 38 and 40 continues until themessage has been received by all interested informants 22. If there areadditional messages in the queue, the CIM 26 will return to state 38 toservice the next message as described above.

The second method through which an informant 22 can receive informationis by querying the CIM 26. When the CIM 26 receives a query from aninformant 22, it transitions to state 42. In state 42, the CIM 26determines which informant 22 is the source of the desired information.That informant 22 is sent a query by the CIM 26 and returns a messagewith the desired information in response to the query. The CIM 26 mayhave to load an informant 22 if that informant is not active and neededto service the query.

In state 44, the CIM 26 forwards the message to the informant 22 whichinitiated the query.

Informants/EM-Aware Applications

FIG. 4 illustrates a block diagram describing the basic operation of aninformant 22 (including the informant portion of an EM-aware application24). State 50 is the home state, from which the informant 22 monitorsand acts on events and maintains information. Upon execution, theinformant 22 sets up a communication link with the CIM 26 in state 52,as described above in connection with state 32 of FIG. 3. Specifically,the informant 22 exchanges information on which messages it will besending the CIM 26, which messages the CIM should forward to theinformant 22, and the identification of the channels for sending andreceiving messages and queries. In addition, the informant 22 builds itown internal dispatch table and message queue.

If an informant is user-configurable, it is responsible for providing aninterface, typically a dialog box, to which the user can enterconfiguration parameters. If there is a property page request, thedialog box is displayed in state 54, and information is received fromthe user. In state 56, any updates to the operation of the informant 22are implemented.

When an informant 22 receives a message from the CIM 26, it places themessage in the internal message queue in state 58 by reference to itsinternal dispatch table. When a message is in the queue, the statechanges to state 60, where the message is routed internally to itsproper destination. In other words, in the preferred embodiment, the CIM26 sends all messages to a given informant 22 over a singlecommunication channel, even if the informant 22 is requesting multiplemessages. Once received, the informant 22 routes the message to itsproper internal destination using its internal dispatch table todetermine the proper destination.

If an informant 22 has a message to send, it will output the messageover the designated channel to the message queue of the CIM in state 60.Not all informants 22 generate messages; some informants only receivemessages.

If an informant is requested to provide information by the CIM 26 (inresponse to a query from another informant 22), it obtains theinformation in state 62. After obtaining the information, the message ormessages would be sent to the CIM 26 in state 60 as described above.

Some informants 22 will act upon information received from otherinformants 22 or generated internally. Such actions could include, forexample, generating additional information to be sent to the CIM 26,modifying system resources (such as changing the resolution of thedisplay or disabling peripherals to conserve energy), modifying othersoftware or the operating system or displaying information to the user.Thus, the state diagram of FIG. 4 has a state 64 where operations areperformed when an action is required.

Each informant 22 is responsible for maintaining its own information.Some informants 22 may store data even while inactive (by storing thedata in non-volatile memory, such as a hard drive, for example), whileothers may not store data at all. The CIM 26, in the preferredembodiment, does not store information received from the informants 22other than temporarily in the CIM's message queue while a message isbeing sent to the informants.

Informants 22 are typically implemented as DLLs (dynamic link libraries)or a COM (Common Object Module) in a WINDOWS 95 environment. Dependingupon the operating system, the informants may have additionalresponsibilities. In a WINDOWS 95 environment, each informant 22 has itsown signature which specifies certain information, such as organizationname, informant name, and informant class (such as modem), messagesreceived and messages sent. This information is stored to the operatingsystem's registry during installation.

Environmental Monitoring

The messaging system described above in connection with the CIM 26 andthe informants 22 (and EM-aware applications 24) allows a device tomonitor and react to environmental changes. Any change which can bedetected by the computer (or other device) and could or should affectits operation can be thought of as an environmental change. Some of thepossible changes are discussed below.

One significant environmental change would be a user change. Most usershave different preferences in interacting with a computer. Somepreferences concern the user interface, such as screen resolution andcolors, default printer and organization of programs and documents onthe screen (the "desktop"), for example. Other preferences concern theuse of the computer. For example, a parent may use the computer mostlyfor word processing and e-mail, while a child may use the same computermostly for games and educational programs.

Another significant environmental change concerns the physicalconnections made to the computer. A notebook computer may sometimes beconnected to a network through a docking station and be disconnectedfrom the network entirely at other times. It may also be connected toother networks through a PC Card connection, other docking stations, orby a wireless network card.

Additionally, the peripherals in a computer often change, particularlyin a notebook computer where there are typically one or two PC Cardslots for receiving devices such as modems, network interface cards,Zoomed video cards, sound cards, and hard drives to name a few PC Carddevices. Additionally, many notebook computers have option bays wherethe user may switch between a floppy drive, hard drive, CD-ROM or otherstorage device.

The configuration of a notebook may also change when it is loaded onto adocking station, which, in addition to a network connection, may havedifferent mass storage devices, video/graphics circuitry, sound devices,and other peripherals such as scanners.

Another type of environmental change is a change of physical location,which may or may not entail changes to physical connections. It iscommon to use a notebook computer in many different physical locations,such as in the office for work, in the home for work and entertainment,in remote offices and conference rooms for presentations andnote-taking, and in automobiles, trains, subways and planes for off-sitework.

The normal operation of the computer may change in response to itsenvironment. In a house, the computer may be used in a child's bedroomsolely for games and education programs and used in the parent's bedroomsolely for word processing and e-mail. In the kitchen it may be used forrecipes by a parent or for games by a child.

Additionally, the location of the computer may affect its optimal modeof operation. For example, if the computer is being used in an airplane,it may be running off of batteries. It is desirable that the batterieslast as long as possible, since an alternative power source is generallynot available in an airplane. A battery informant, upon receivinginformation that the computer was being used in an environment where ACpower was not available, could identify subsystems in the notebook whichwould probably not be used, such as a modem or a network connection, andpower down those subsystems in order to conserve energy.

The operational status of the computer also affects its environment. Asthe computer's hard disk becomes low on free space, for example, a harddisk informant could identify files which had not been accessed recentlyand compress those files. Alternatively, the hard disk informant couldmodify system parameters such as the size of the swap file (which theoperating system creates as virtual memory) and/or the size of anInternet browse cache in order to create more hard disk space.

A computer's environment is also changed by the set of programs beingrun. When a program is running a word processing program and ascheduling program, it is in a different environment from when it isrunning an entertainment program and an Internet connection.

Detecting Environments

In the preferred embodiment, a notebook computer is able to detectenvironments through its informant/CIM structure described above inconnection with FIGS. 2-4. Environmental information is then used to (1)control operation of the computer to optimize the notebook computer'sperformance, (2) reduce efforts on the user to properly configure thecomputer for a given environment and (3) anticipate user desires.

FIG. 5a illustrates a diagram showing various detection mechanisms whichcould be used in conjunction with a notebook computer to provideenvironmental information, some or all of which could be used in a givensituation. The notebook computer 70 has circuitry to receive signalsfrom a GPS device 72, active/passive location device 74 or wirelessnetwork 76. Wired connections can be made to networks or externalperipherals 78 through the computer's ports (serial/parallel) and buses(PC Card slots, option bays and other external bus connections). Othercomputers and devices, such as Personal Digital Assistants (PDAs,sometimes referred to as handheld or palmtop computers), can be coupledto the notebook computer 70, either by wired or wireless connections.Internally, the notebook computer can reference information stored invarious databases, such as a scheduling program, and the computer'stime/date circuitry 82. The computer 70 can also detect its internalconfiguration of active programs and desktop configuration 84 (theconfiguration in which the user views and interacts with the programs).

Global positions systems 72 are currently available to interface withcomputers and some mapping programs can accept information from a globalposition system to locate the position of the user on a map. Thisinformation could also be used by the computer to determine physicallocation environmental information. For example, the information from aGPS device 72 could be used to determine whether the computer was beingused at the office, at home, in an aircraft or train, or at a remotesite.

Active/Passive location devices 74 are similar to GPS systems, but aremore localized. Active location devices would include devices for whichcould identify certain locations. For example, a transmitter whichoutput a 20-bit number could be place in each room which requiredidentification, such as each office and conference in a place ofbusiness and each room in a house. The transmitters could output thenumber whenever movement was detected within the room or in response toa signal from the computer. The computer would map the numbers to theiractual location, so that it would be aware of its physical location.Passive location devices could include, for example, a bar code whichwas scanned upon entering a room.

Wireless networks 76 are also currently available and are particularlyuseful for notebook computers, since the network connection can be madewhile allowing the notebook computer to remain portable. In addition tothe network connection, the wireless network connection can provideinformation on the physical location of the notebook computer and to theresources to which the notebook computer has access.

Wired networks 78 can also be coupled to the notebook computer 70through network interface card, typically through a PC Card interface,internal circuitry or a docking station. Information about thewhereabouts of the computer can also be provided through communicationwith the wired network. Other peripherals can be connected to thenotebook computer's parallel and serial ports, such as printers, modems,scanners, mass storage devices such as a ZIP drive, made by IomegaSystems, Inc.

PDAs, programmable calculators and personal organizers 80, such as thosemanufactured by Texas Instruments, Sony Corporation, US RoboticsCorporation, Casio and Apple can exchange information with the notebookcomputer 70 through a port or through wireless transfer. Otheraccessories, such as the TIMEX DATALINK watch can receive informationwith the notebook computer. It would be possible to provide interfaceswith other appliances, such as television sets, video tape recorders andalarm systems.

The computer's environment can also be determined by databaseinformation, either internal to the notebook computer 70 or from othersources, such as a network connection. The computers internal time/datecircuitry can determine the present time and use the schedulinginformation to determine its present location or its desiredconfiguration.

The configuration of a computer's desktop or active programs alsoprovides environmental information. When a computer is executing one ora set of education programs, it could be assumed that a certain user isusing the computer. On the other hand, when a scheduling program isbeing run, the user can be determined by reference to the particulardatabase (since the scheduling program may have separate databases fordifferent users).

User-provided information may also be used to identify an environment. Auser may explicitly state an environment (such as by selecting "office"from a list of environments) or choose a desktop (from a graphical userinterface which supports multiple desktops) which would indicate anenvironment.

Environment information is often determined not from a single source,but from multiple sources. For example, a notebook computer may beturned on at 10:00 AM and recognize that it is connected to the dockingstation in the office associated with User1. The scheduling program mayindicate that User1 has a meeting at 10:15 to present materials onProject1. While the computer can easily determine the physical locationof the computer as User1's office (by identifying the docking stationand network connection), it can also determine a desired softwareconfiguration, namely those programs and document associated withProject1. Accordingly, it may initiate execution of the programs neededfor Project1 (or at least prompt User1 to determine if he or she desiresto run those programs). It may also determine which resources associatedwith the conference room will be needed for the presentation and promptthe user if additional resources, such as a overhead projector and anLCD panel, will be needed for the presentation.

FIGS. 5b-d illustrate changes in a computer's configuration which couldbe made responsive to detected environmental changes. FIG. 5billustrates how location detection devices, such as the GPS, active andpassive location devices shown in FIG. 5a, can be used to control theconfiguration of a computer. From home state 86a, control is transferredto state 86b when a new location signal is received. The location signalcould be received from the GPS circuitry on a periodic bases, or fromactive sensors disposed throughout an office or input by a user througha scanner or a keyboard. In state 86b, the location is determined, forexample, by reference to a database which relates numeric codes tolocations. In some instances, a new location signal may not result in achange in location (for example, if the GPS signal changed as thecomputer was moved from one end of a conference room to another); inthat instance, control switches back to the home state 86a. Assumingthere is a location change, control is switched to state 86c, where aconfiguration is determined. For example, if the location is determinedto be an airport, measures for conserving batteries may be taken. Inanother example, if the location was determined to be a conference roomin an office which had a wireless network, the computer could beconfigured to access the wireless network.

Prior to making the changes to the computer's configuration, however,the user is prompted whether the changes are desired in state 86d. Ifthe user declines, control switches back to the home state 86a.Otherwise, if the user accepts the changes, the configuration is changedin state 86e prior to returning to the home state 86a. It should benoted that a change in location will not always result in a change inconfiguration. In this case, control returns directly to the home state86a from state 86c.

FIG. 5c illustrates how database references, such as referring to ascheduling program, can be used to control the configuration of acomputer. From home state 87a, control is transferred to state 87bperiodically to check a database, such as a scheduling database. Ifthere is no scheduled docket or meeting event, control switches back tothe home state 87a. If there is an event, control is switched to state87c, where a configuration is determined. For example, if a presentationis docketed for completion, the presentation software may be executedand the intended presentation document loaded. If, for example, ameeting is scheduled in a conference room, the configuration of thecomputer could be modified to connect to the network, wired or wireless,available from the conference room.

Prior to making the changes to the computer's configuration, however,the user is prompted whether the changes are desired in state 87d. Ifthe user declines, control switches back to the home state 87a.Otherwise, if the user accepts the changes, the configuration is changedin state 87e prior to returning to the home state 87a.

FIG. 5d illustrates how the hardware and software environment can beused to control the configuration of a computer. From home state 88a,control is transferred to state 88b the hardware or softwareconfiguration changes. The change could be detected by softwareinformants in conjunction with the operating system. In state 88b, adefault configuration is determined for the current softwareenvironment. For example, if the computer detects that the user haschanged from an "Work Office" desktop to a "Home Office" desktop, it canconfigure the computer to be operating in the home environment. Thedefault configuration would depend upon the user, but in a exemplaryconfiguration, the computer could determine if the computer wasconnected to a telephone line and connect to the office computer througha remote access program.

Once again, prior to making the changes to the computer's configuration,however, the user is prompted whether the changes are desired in state88c. If the user declines, control switches back to the home state 88a.Otherwise, if the user accepts the changes, the configuration is changedin state 88d prior to returning to the home state 88a.

Responses to Environmental Information

In accordance with environmental information, the notebook computer 70can adjust its operations to increase productivity. The number ofpossibilities are limitless; a few examples are given below.

FIG. 6 illustrates a basic diagram showing the operation of an informant22 or an EM-aware application 24 responsive to environmentalinformation. From home state 90, the informant 22 or EM-awareapplication 24 transitions to state 92 responsive to receivingenvironmental information either from another informant 22 or byderiving the information itself. In state 92, the informant 22 orEM-aware application 24 updates it information. New information will notalways result in an action. If no action is required, the informant 22or EM-aware application 24 returns to state 90. Otherwise the action isperformed in state 94.

The action which may be taken are many fold. The informant 22 may send amessage to CIM 26 which causes other informants or EM-aware applications24 to take actions. The informant itself may take actions such asautomatically launching an application, adjusting system operation orconfiguring the operating system.

FIG. 7 illustrates a simple example where a first informant hasdetermined that the scanner, which is attached to the notebook computer70, has been turned on. A second informant is registered with the CIM 26to receive this information. When the information is received in block100, the second informant determines which application is currentlyactive. This information may be determined by the second informant, ormay be from a message which a third informant sends each time the activewindow changes, or may be the result of a query by the second informant.If a graphics/desktop publishing program is active (block 102), thesecond informant may adjust the graphics/desktop publishing program toreceive an image by setting the TWAIN program to receive at a certainresolution and color depth suitable for publishing. If a fax program isactive (block 104), the informant may configure the TWAIN program forscanning a document at 200 dpi in greyscale. If a wordprocessor is inthe active window (block 106), the informant may load an OCR (opticalcharacter recognition) program and set the TWAIN program to scan at highresolution in black and white. Alternatively, if the active program wasan EM-aware application 24, it could perform the setup of the TWAINprogram based on information that the scanner was turned on.

FIG. 8 illustrates a scenario where the notebook computer is turned onin an airplane. In block 110, a first informant determines that thecomputer is on an airplane. A second informant determines in block 112that the user is User1. Based on this information, a third informantqueries the CIM 26 for information from User1's schedule in block 114.The CIM queries the informant or informants registered to supply thisinformation, which forward a response that User1 is due to presentinformation on Project1 in the New York City offices (block 116). Afourth informant has also received the message that the computer isbeing run on an airplane and has shut down unnecessary systems (such asmodem and network hardware) and software (such as a program whichmonitors disk fragmentation). The third informant then prompts the userabout loading the software needed for the upcoming presentation in block120. The user may be interested in running other software and decline.In the illustration, the prompt is accepted by the user, and thesoftware and documents are loaded in block 122. The EM-aware softwareinitiates a query on resources in the remote offices (from an internaldatabase) in block 124 and formats the documents as necessary.

Autolaunch Capability

A particular category of response to environmental information isautolaunch capability. An autolaunch informant facilitates use of thecomputer by anticipating which programs will be run by a user in avariety of circumstances.

For purposes of illustration, it will be assumed that the computer has aGUI (graphic user interface) capable of multiple desktops. Each desktopis a separate graphical representation of available documents andprograms which may be arranged by the user. A specific GUI is discussedhereinbelow; however, the autolaunch capability is not dependent uponany particular GUI.

A flow chart describing operation of the autolaunch informant is shownin FIG. 9a. FIG. 9a illustrate the procedure for counting applicationsto determine those which are frequently use. In block 130, theautolaunch informant detects the loading of an application, which in aWINDOWS 95 operating system would be a *.exe, *.com or *.bat file. Otherexecutables, such as *.dll files are not counted, because they aretypically launched by programs rather than directly by users. Indecision block 132, the autolaunch informant checks to see if a detectedprogram is on a user-defined exclusion list. This allows the user toeliminate programs which may be launched frequently, such as a filemanager or an Internet browser, but does not have a particularassociation with a desktop or other environmental consideration.

If the launched program is not excluded, then a count for that programis incremented with respect to the current desktop in block 134. Thus,if a word processor is launched in the "office" desktop, its count forthat desktop is incremented by one. If the same program is loaded in the"home" desktop, then its count for that desktop is incremented.

In decision block 136, the accumulated count for the program is used todetermine the frequency at which the user loads the program while in theparticular workspace. This frequency is set as a percentage and comparedto a user defined threshold, Max %. If the number of counts in thecurrent desktop exceeds Max % for that desktop, the user is prompted asto whether the application should be placed in an autolaunch list forthe current desktop. If the user replies affirmatively, the applicationname is placed on an autolaunch list for the current desktop.

FIG. 9b illustrates a flow chart used to automatically launchapplications. In block 140, the autolaunch informant detects when a userhas changed desktops. In blocks 142, 144, 146 and 148, the autolaunchinformant loads each application specified in the autolaunch list forthe new desktop (the application may prompt the user to verify that heor she would like the applications to be loaded). If an application isalready running, it will not be loaded (see decision block 144).

While the autolaunch informant has been discussed in relation with thechange of a desktop, it could also be tied to other detectableenvironmental changes. Applications could be launched in response to adetected change in physical location (for example, the schedulingprogram could be loaded each time the user uses the computer in his orher office), detected changes in hardware configuration (for example, ane-mail program could be tied to detection of a network connection) orchanges in software configuration (for example, a graphics program couldbe tied to execution of a desktop publishing program). Thus, step 134 ofFIG. 9a could increment counts per a variety of environmental factors.

Further, the autolaunch informant could track loading of files otherthan application program, such as documents. Thus, if a particularspreadsheet was loaded each Friday, the autolaunch program could detectits periodic use and autolaunch the document as well as the spreadsheetapplication program. Alternatively, the autolaunch program could notethe last document loaded by an application in each desktop, such thatthe most recently loaded document was loaded with each auto-launchedapplication.

Graphical User Interface

FIGS. 10-17 illustrate a graphical user interface 200 which facilitatesuse of the computer. This interface is not necessary for use of theenvironmental managing functions discussed above, and can be used inconjunction with any operating system which supports, or can be made tosupport, multiple desktops.

FIG. 10 illustrates a GUI 240 which is easier to use than prior art GUIsand supports unlimited desktops with full visual impact. In thepreferred embodiment, the GUI 240 not only supports multiple desktops,but also supports multiple workspaces. Whereas desktops differ only intheir visual appearance and different sets of icons and active programwindows, a workspace takes into account the environment of the computer.Accordingly, a computer may be connected to a network, a docking stationand multiple laser printers, when used in the office environment, thesame computer may be connected only to an inkjet printer in the homeenvironment. Thus, when used with software which can distinguishdifferent environments, the GUI described herein can communicate withthe environmental manager software to detect and react to changes inresources.

The GUI 240 changes workspaces 242 responsive to user interaction with amulti-faced workspace object 244 (hereinafter cube 244). While a cubeshowing three of its faces 246 (individually referenced as faces 246a,246b and 246c) is used herein, other multi-faced three dimensionalobjects such as tetrahedron-, octahedron- or other polyhedron-shapedobjects could also be used. A miniaturized bitmap of the cube is alsoplaced in the tray area.

Each workspace can have a unique set of workspace icons 222, iconarrangement, wallpaper 212, and color scheme. The user controls theactive workspace 242 by selecting a desired workspace from the cube 244,as will be discussed in greater detail hereinbelow. The cube 244provides a visual representation of a workspace on each of its faces246. In FIG. 10, the image on each face 246 is indicated by a letter(for example, "A", "B" or "C"), with the corresponding wallpaper 212similarly labeled. In actual use, the faces 246 would provide a bitmapimage to identify the workspace (see FIG. 11). The uppermost face 246aindicates the active workspace 242. The remaining faces 246b and 246care used to switch to a different workspaces which are not currentlyactive. It should be noted that the "active" workspace 242 is theworkspace which is currently being viewed by the user; the remainingworkspaces may be supporting applications which are active but unseen bythe user.

To switch to a different workspace, the user can simply click on one ofthe inactive faces 246b or 246c (alternative methods for switchingworkspaces are discussed below). To expose workspaces not currentlyaccessible through the three faces currently being displayed, the cubecan be rotated (see FIGS. 14a-d).

The cube 244 is shown in greater detail in FIG. 11. Each face 246 has abitmap image (shown in proper perspective depending upon the associatedface 246a, 246b, or 246c). For example, the active workspace face 246ahas a bitmap of an appointment book, which would be appropriate for ascheduling workspace. Face 246b has a space ship bitmap, which would beappropriate for a workspace for playing games. Face 246c has a housebitmap, which would be appropriate for using the computer at home.

Arrows 248a and 248b are placed to the left and right of cube 244,respectively. These arrows are shown in phantom to indicate that theyare normally invisible, but are displayed when the user's pointer isplaced proximate the cube 244. These arrows can be used to rotate thecube to display additional workspaces, as will be discussed inconnection with FIGS. 14a-d.

The bitmaps for the faces may be acquired in a number of ways. ACustomize dialog box (shown in FIG. 15d) allows the user to select froma plurality of image or icon files on the computer or network.Additionally, in the preferred embodiment, the user can select a portionof the workspace or other image using a software tool and drag-and-dropthe selection to an exposed face of the cube to set its image (shown inFIG. 15e). Other examples of bitmaps which would be appropriate would bea bitmap from a digitized image of a persons face for his or her mainworkspace, an airplane icon for a workspace containing programs usedduring travel, and so on.

FIG. 12 illustrates a preferred method of moving the cube 244 on theworkspace 242. When the cursor is placed proximate the intersection ofthe three cube faces 246, it turns into a hand 250 (or other appropriatecursor shape), indicating that the mouse (or other user input device) ispositioned properly to move the cube 244. As the mouse is moved byclicking and holding on the left mouse button and dragging on the mouse,an image 252 (such as a 50% transparent image or an outline) of the cube244 moves across the screen. When the left mouse button is released, theposition of the cube moves to the location where the transparent imagewas located at the time of the release.

In operation, the user may move the cube 244 to various positions on thescreen not covered by an active application window. Also, in thepreferred embodiment, the user can optionally set the cube so that it isalways on top of the workspace (i.e., the topmost application windowwill not cover the cube 244).

FIGS. 13a and 13b illustrate how the cube can be used to switchworkspaces 242. In FIG. 13a, the "A" workspace is active, as indicatedby face 246a of the cube 244. Consequently, the icons, wallpaper andcolor scheme associated with the "A" workspace are displayed to theuser. By placing the cursor over the face 246b of the cube 244, the "B"workspace is selected by clicking on the left mouse button. Similarly,the "C" workspace could have been selected by clicking on the left mousebutton while the cursor was placed over face 246c.

FIG. 13b illustrates the result of the workspace switch initiated inFIG. 13a. The workspace elements associated with the "B" workspaceappear and the bitmap associated with the "B" workspace is placed on theactive workspace face 246a. The bitmap associated with the "C" workspacemoves to face 246b and the bitmap associated with the "A" workspacemoves to face 246c.

FIGS. 14a-14d illustrate rotation of the cube to expose additionalworkspace bitmaps. When the user moves the cursor to within apredetermined number of pixels of the right or left of the cube 244, therotation arrows 248a and 248b appear. By clicking on the left arrow,workspace images rotate to the left to show two additional workspacebitmaps, as shown in FIG. 14b.

As a result of a click on left rotation arrow 248a, the bitmapsassociated with workspaces "B" and "C" are replaced with the bitmapsassociated with workspaces "D" and "E", respectively. The bitmap forworkspace "A" remains on the active workspace face 246a, since rotationof the cube 244 by itself does not affect the active workspace.

In FIG. 14b, the left rotation arrow 248a is again clicked with the leftmouse button, resulting in movement of the bitmaps for workspace "F" and"G" being displayed on the faces 246b and 246c respectively. Thisorientation of the cube is shown in FIG. 14c. By left-click on the rightrotation arrow 248b, the bitmaps corresponding to workspaces "D" and "E"are restored to faces 246b and 246c, respectively.

In operation, a user can quickly cycle through multiple workspaces usingthe left and right rotation arrows. Each face shows a bitmap chosen bythe user to identify the workspace. If a bitmap does not readilyidentify a workspace, the name of the workspace can be seen by locatingthe cursor over that face for a predetermined amount of time. No matterhow many workspaces are supported by the cube 246, the bitmaps remainthe same size. Further, no space on the taskbar is used.

FIGS. 15a-15j illustrate examples of menu functions which could beaccessed by right-clicking on the cube 244. When a user performs a rightclick on the cube, a menu 254 appears, headed by the name of theworkspace (shown in FIG. 15a as "My Games") selected by the user. Theuser may right-click on either the active workspace face 246a or one ofthe workspace represented on faces 246b or 246c.

By pressing the workspace name (i.e., My Games), the submenu 255 shownin FIG. 15b appears. The "Open" menu choice is used to open the namedworkspace (if such workspace is not already the active workspace). TheView menu choice allows the user to see a directory listing of the namedworkspace, similar to the "Explore" menu choice (from which the user mayselect any workspace), described below. The "Delete" menu choice removesthe workspace information associated with the named workspace from theworkspace database. If the deleted workspace information corresponds tothe active workspace, the active workspace becomes the workspacerepresented by face 246b.

The "Customize" sub-menu choice activates the menu 256 shown in FIG.15c. The Customize sub-menu provides three choices: Display Properties,Auto Launch and Sounds Properties.

The "Auto Launch" menu choice allows the user to set an application formanaging the applications designated to automatically load upon enteringa workspace, as described in connection with FIGS. 9a-9b.

The "Sounds Properties" menu choice allows the user to set sounds usedfor various acts of the cube 244, such as rotation, change of workspace,minimization and maximization.

The "Display Properties" menu choice opens the Display Properties dialogbox 258, shown in FIG. 15d. A representation 260 of the cube 244 andarrows 248a and 248b is shown at the top of the dialog box 258. Thiscube representation 260 is interactive to allow the user to select aworkspace face using the same cursor movements as selecting a workspace.Alternatively, a workspace can be chosen through the GoTo button 262,which provides a list of all workspace names when it is pressed.

The name (which appears in a box when the cursor is held over theassociated face 246 for a predetermined time period) can be set by theuser in text box 264. An icon (bitmap file) can be chosen from the dropdown box 266. Workspaces can be added to or deleted from the list ofavailable workspaces using Add and Delete buttons 268 and 270,respectively.

The cube size can be chosen through radio buttons 272. In the preferredembodiment, a large cube is 84×84 pixels in size and a small cube is32×32 pixels in size. Intermediate sizes could also be provides, as wellas a completely scaleable cube. An alternative sizing method would allowthe user to interact with the cube 244 on the workspace, for example bypulling on corner tabs associated with the cube 244.

In checkbox 274, the user can choose whether to keep the rotation arrows248a and 248b always visible or visible only when the cursor is placedproximate the cube.

The OK button 276 set any changes made by the user. The Cancel button278 reverts the cube 244 to its state prior to any changes made in thedialog box 258.

The Apply button 280 allows the user to preview changes to the cube 244,but the prior state can not be restored by using the Cancel button 278.It should be noted that while the dialog box of FIG. 15d illustrates anumber of items which could be configured for each workspace, otherproperties, such as screen resolution and other environmental settings,could be configured through the Display Properties dialog box 258.

FIG. 15e provides an alternative method for assigning a bitmap to a cubeface 246. In this embodiment, the user selects a square area 282 of thedisplay screen. This area may be part of a document or image filedisplayed in an active application window, a portion of the wallpaper212, or an icon 222. The user then clicks and drags on the selected areato one of the exposed cube faces 246. The bitmap for that face 246 isthen replaced with a bitmap formed from the selected area (the bitmapdisplayed is transformed to appear angled as dictated by the relevantcube face).

Referring again to FIG. 15a, the "Move Cube" menu choice changes thecursor to a hand, which can grab the cube 244 and move it to anylocation on the active workspace 242. This procedure is shown inconnection with FIG. 12.

The "Rotate Cube" menu choice provides the GoTo submenu 283 shown inFIG. 15f. The cube can be rotated left or right by pressing either theLeft or Right menu choices in this submenu.

Returning to FIG. 15a, the Minimize Cube menu choice causes the cube tobe removed from the screen but remains as a tray icon 288 in the trayarea 220 of the taskbar 214.

FIG. 15g illustrates the "GoTo" submenu 284. The GoTo submenu 284 liststhe names of all workspaces. When a name is selected, the workspaceswitched to that selected workspace and the associated bitmap is placedon the active workspace face 246a of the cube 244.

Returning to FIG. 15a, the "Explore" menu choice opens a submenu listingthe workspaces, as shown in FIG. 15g. When a workspace is selected, theWINDOWS 95 (or other operation system) file manager is executed, set atthe directory holding the files located on the selected workspace.Alternatively, a customized view of the workspace settings, files,shortcuts and other environmental settings associated with a workspacecould be shown in place of the file manager display. In addition tousing the menus to obtain a display of a workspace's contents, the usercould interact with the cube 244; for example, the user could doubleright click on a face 246 to obtain a list of the workspace's contents.

The tray area 220 is shown in FIG. 15h. By double (left) clicking on thecube tray icon 288 while the cube 244 is minimized, the cube 244 isrestored to the workspace 242. By right clicking on the cube tray icon288 while the cube 244 is open (visible on the workspace 244), the menu90 shown in FIG. 15i appears. From this menu, the user can minimize thecube 244, Exit (terminate the GUI) or determine the version number andrelated information using the About menu choice. Other actions such as ahelp program could be added to this menu.

If the user right clicks the cube tray icon 288 while the cube 244 isminimized (i.e., the GUI is running, but the cube 244 is not visible),the menu 292 shown in FIG. 15j is displayed. The cube 244 can bereturned to the workspace 242 by pressing the Restore menu selection, orthe GUI can be terminated using the Exit menu choice.

FIG. 16 illustrates movement of icons from one workspace to another. Tomove an icon from an active workspace to another workspace, the cube 244is rotated to show the destination workspace. The icon is then movedinto the face 246 showing the destination workspace using a left-clickand drag. In the example shown in FIG. 16, the Game1 icon 298 is copiedto the "C" workspace shown on face 246c.

An alternative method is to use a right-click and drag to move an iconinto the face 246 associated with a desired destination workspace. Amenu will then appear allowing the user to select either "Copy Here" or"Move Here".

FIG. 17 illustrates a "Save As" dialog box 299, which can be used tosave a document from an application to a particular workspace. The dropdown box allows the user to select a workspace name (in this case"Project1"). The file "New Document" is then saved to a directoryassociated with the selected workspace, and an icon is placed on theworkspace which identifies the document. Alternatively, a shortcut fileassociated with the document can be placed in the selected workspace'sdirectory and a shortcut icon can be placed on the selected workspace.

Although the Detailed Description of the invention has been directed tocertain exemplary embodiments, various modifications of theseembodiments, as well as alternative embodiments, will be suggested tothose skilled in the art. The invention encompasses any modifications oralternative embodiments that fall within the scope of the claims.

What is claimed is:
 1. A method of controlling operation of a computer,comprising the steps of:detecting changes in an environment associatedwith the computer wherein one of said changes in environment is a changein location of use of the computer; determining an optimum configurationbased on the new environment; and modifying the configuration of thecomputer based on the optimum configuration.
 2. The method of claim 1wherein said step of determining an optimum configuration comprises thestep of using a prior configuration previously used by the user.
 3. Themethod of claim 1 wherein said step of determining an optimumconfiguration comprises the step of determining a set of programs toload.
 4. The method of claim 1 wherein said step of determining anoptimum configuration comprises the step of modifying the operation ofhardware systems of the computer.
 5. The method of claim 4 wherein saidstep of modifying the operation of hardware systems comprises the stepof reducing power to one or more hardware systems.
 6. A method ofcontrolling operation of a computer, comprising the steps of:detectingchanges in an environment associated with the computer wherein one ofsaid changes in environment is a change in the user of the computer;determining an optimum configuration based on the new environment; andmodifying the configuration of the computer based on the optimumconfiguration.
 7. The method of claim 6 wherein said step of determiningan optimum configuration comprises the step of using a priorconfiguration previously used by the user.
 8. The method of claim 6wherein said step of determining an optimum configuration comprises thestep of determining a set of programs to load.
 9. The method of claim 6wherein said step of determining an optimum configuration comprises thestep of modifying the operation of hardware systems of the computer. 10.The method of claim 9 wherein said step of modifying the operation ofhardware systems comprises the step of reducing power to one or morehardware systems.
 11. A method of controlling operation of a computer,comprising the steps of:detecting changes in an environment associatedwith the computer wherein one of said changes in environment is a changein a desktop screen used as a graphical user interface; determining anoptimum configuration based on the new environment; and modifying theconfiguration of the computer based on the optimum configuration. 12.The method of claim 11 wherein said step of determining an optimumconfiguration comprises the step of using a prior configurationpreviously used by the user.
 13. The method of claim 11 wherein saidstep of determining an optimum configuration comprises the step ofdetermining a set of programs to load.
 14. The method of claim 11wherein said step of determining an optimum configuration comprises thestep of modifying the operation of hardware systems of the computer. 15.The method of claim 14 wherein said step of modifying the operation ofhardware systems comprises the step of reducing power to one or morehardware systems.
 16. A computer system with an environmental managerfor controlling operation of a computer, comprising:processing circuitryfor:detecting changes in an environment associated with the computerwherein one of said changes in environment is a change in location ofuse of the computer; determining an optimum configuration based on thenew environment; and modifying the configuration of the computer basedon the optimum configuration.
 17. The computer system of claim 16wherein determining an optimum configuration comprises the using a priorconfiguration previously used by the user.
 18. The computer system ofclaim 16 wherein determining an optimum configuration comprisesdetermining a set of programs to load.
 19. The computer system of claim16 wherein determining an optimum configuration comprises modifying theoperation of hardware systems of the computer.
 20. The computer systemof claim 19 wherein modifying the operation of hardware systemscomprises reducing power to one or more hardware systems.
 21. A computersystem with an environmental manager for controlling operation of acomputer, comprising the steps of:processing circuitry for:detectingchanges in an environment associated with the computer wherein one ofsaid changes in environment is a change in the user of the computer;determining an optimum configuration based on the new environment; andmodifying the configuration of the computer based on the optimumconfiguration.
 22. The computer system of claim 21 wherein determiningan optimum configuration comprises the using a prior configurationpreviously used by the user.
 23. The computer system of claim 21 whereindetermining an optimum configuration comprises determining a set ofprograms to load.
 24. The computer system of claim 21 whereindetermining an optimum configuration comprises modifying the operationof hardware systems of the computer.
 25. The computer system of claim 24wherein modifying the operation of hardware systems comprises reducingpower to one or more hardware systems.
 26. A computer system with anenvironmental manager for controlling operation of a computer,comprising the steps of:processing circuitry for:detecting changes in anenvironment associated with the computer wherein one of said changes inenvironment is a change in the desktop screen used as a graphical userinterface; determining an optimum configuration based on the newenvironment; and modifying the configuration of the computer based onthe optimum configuration.
 27. The computer system of claim 26 whereindetermining an optimum configuration comprises the using a priorconfiguration previously used by the user.
 28. The computer system ofclaim 26 wherein determining an optimum configuration comprisesdetermining a set of programs to load.
 29. The computer system of claim26 wherein determining an optimum configuration comprises modifying theoperation of hardware systems of the computer.
 30. The computer systemof claim 29 wherein modifying the operation of hardware systemscomprises reducing power to one or more hardware systems.
 31. A methodof executing programs in a computer, comprising the steps of:detecting achange from one desktop to another desktop; determining in the computerwhether each of a set of programs associated with said change iscurrently loaded; and automatically loading the programs in said setwhich are not currently loaded.
 32. The method of claim 31 and furthercomprising the step of adding programs to said set of programsby:maintaining information indicative of the use of each program in eachdesktop; and comparing said information to a threshold.
 33. The methodof claim 32 wherein said maintain step comprises the step of maintaininginformation on the frequency at which each program is used with eachdesktop.
 34. The method of claim 33 and further comprising the step ofprompting the user for affirmation prior to adding one of said programsto said set.
 35. The method of claim 34 wherein said step ofautomatically loading programs includes the step of loading a documentassociated with the detected change of environment.
 36. The method ofclaim 33 wherein said step of automatically loading programs includesthe step of loading a document associated with the detected change ofenvironment.
 37. The method of claim 32 and further comprising the stepof prompting the user for affirmation prior to adding one of saidprograms to said set.
 38. The method of claim 37 wherein said step ofautomatically loading programs includes the step of loading a documentassociated with the detected change of environment.
 39. The method ofclaim 32 wherein said step of maintaining information indicative of theuse of each program in each desktop comprises the step of counting thenumber of times each program file is opened in each desktop.
 40. Themethod of claim 39 wherein said step of automatically loading programsincludes the step of loading a document associated with the detectedchange of environment.
 41. The method of claim 32 wherein said step ofautomatically loading programs includes the step of loading a documentassociated with the detected change of environment.
 42. The method ofclaim 31 wherein said step of automatically loading programs includesthe step of loading a document associated with the detected change ofenvironment.
 43. A method of executing programs in a computer,comprising the steps of:determining whether the user changed desktops ina user interfaces determining in the computer whether each of a set ofprograms associated with said change is currently loaded; andautomatically loading the programs in said set which are not currentlyloaded.
 44. The method of claim 43 wherein said step of automaticallyloading programs includes the step of loading a document associated withthe detected change of environment.
 45. A method of executing programsin a computer, comprising the steps of:detecting a change in environmentassociated with the computer being operated in a new location;determining in the computer whether each of a set of programs associatedwith said change is currently loaded; and automatically loading theprograms in said set which are not currently loaded.
 46. The method ofclaim 45 wherein said step of automatically loading programs includesthe step of loading a document associated with the detected change ofenvironment.
 47. A computer comprising:processing circuitryfor:detecting a change from one desktop to another; determining in thecomputer whether each of a set of programs associated with said changeis currently loaded; and automatically loading the programs in said setwhich are not currently loaded.
 48. The computer of claim 47 whereinsaid processing circuitry further adds programs to said set of programsby:maintaining information indicative of the use of each program in eachdesktop; and comparing said information to a threshold.
 49. The computerof claim 48 wherein said processing circuitry maintains information bystoring information on the frequency at which each program is used witheach desktop.
 50. The computer of claim 49 wherein said processingcircuitry further prompts the user for affirmation prior to adding oneof said programs to said set.
 51. The computer of claim 48 wherein saidprocessing circuitry further prompts the user for affirmation prior toadding one of said programs to said set.
 52. The computer of claim 48wherein said processing circuitry stores information indicative of theuse of each program in each desktop by counting the number of times eachprogram file is opened in each desktop.
 53. The computer of claim 47wherein said processing circuitry detects a change in environment bydetermining that the time for a scheduled event has occurred.
 54. Thecomputer of claim 47 wherein said processing circuitry further loads adocument associated with the detected change of environment into one ofone of said application programs.
 55. A computer comprising:processingcircuitry for:detecting a change in environment by determining whetherthe user changed desktops in a user interface associated with thecomputer; determining in the computer whether each of a set of programsassociated with said change is currently loaded; and automaticallyloading the programs in said set which are not currently loaded.
 56. Acomputer comprising:processing circuitry for:detecting a change inenvironment by determining that the computer is being operated in a newlocation; determining in the computer whether each of a set of programsassociated with said change is currently loaded; and automaticallyloading the programs in said set which are not currently loaded.